package com.dz51.core.basedao.query;


import com.dz51.core.basedao.dao.IConditionSupport.QueryStringType;
import com.dz51.core.page.Pager;

/**
 * @Title: IConditionBuilder.java
 * @Package com.dz51.core.basedao.query
 * @Description: 查询构造器
 * @author Zhaoqt  
 * @date 2014-5-4 上午9:14:33
 * @version V1.0
 */
public abstract interface IConditionBuilder {

	/**
	 * 初始化基础查询语句
	 * @Title: setBaseQueryString
	 * @param paramString
	 */
	public abstract void setBaseQueryString(String queryString);
	
	/**
	 * 返回对象
	 * @Title: setResultObject
	 * @param resultObject
	 */
	public abstract void setResultObject(Class<?> resultObject);
	
	/**
	 * 查询语言类型 SQL,HQL
	 * @Title: setQueryStringType
	 * @param queryStringType
	 */
	public abstract void setQueryStringType(QueryStringType queryStringType);
	
	/**
	 * 添加查询条件
	 * @Title: addCondition
	 * @param name
	 * @param object
	 */
	public abstract void addCondition(String name, Object object);
	

	/**
	 * 添加排序
	 * @Title: addSort
	 * @param orderType
	 * @param sort
	 */
	public abstract void addSort(OrderType orderType, String sort);
	
	
	/**
	 * 分页计算
	 * @Title: addPager
	 * @param pager
	 */
	public abstract void addPager(Pager pager);
	
	
	/**
	 * 查找属性名称
	 * @Title: setProperty
	 * @param property
	 */
	public abstract void setProperty(String property);
	
	/**
	 * 查找关键字, 属性名称
	 * @Title: setKeyword
	 * @param keyword
	 */
	public abstract void setKeyword(String keyword, String property);
	
	/**
	 * 是否启用Criteria默认ture
	 * @Title: isCriteria
	 * @param is
	 */
	public abstract void isCriteria(boolean is);
	
	// 排序方式
	public enum OrderType {
		ASC, DESC
	}
	
}
